package com.cencat.merchant.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.cencat.common.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 路线实体类
 * @author cencat
 * @since 2025-01-20
 */
@TableName("route")
@Data
@EqualsAndHashCode(callSuper = false)
public class Route extends BaseEntity {

    /**
     * 路线ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 租户ID
     */
    @TableField("tenant_id")
    private Long tenantId;

    /**
     * 路线编码
     */
    @TableField("route_code")
    private String routeCode;

    /**
     * 路线名称
     */
    @TableField("route_name")
    private String routeName;

    /**
     * 起始城市
     */
    @TableField("start_city")
    private String startCity;

    /**
     * 目标城市
     */
    @TableField("end_city")
    private String endCity;

    /**
     * 路线类型
     */
    @TableField("route_type")
    private String routeType;

    /**
     * 路线价格
     */
    @TableField("price")
    private BigDecimal price;

    /**
     * 路线距离（公里）
     */
    @TableField("distance")
    private BigDecimal distance;

    /**
     * 路线状态
     */
    @TableField("status")
    private String status;

    /**
     * 发布状态
     */
    @TableField("publish_status")
    private String publishStatus;

    /**
     * 订单数量
     */
    @TableField("order_count")
    private Integer orderCount;

    /**
     * 是否推荐（1-推荐，0-不推荐）
     */
    @TableField("is_recommended")
    private Integer isRecommended;

    /**
     * 优先级
     */
    @TableField("priority")
    private Integer priority;

    /**
     * 预计时长（小时）
     */
    @TableField("estimated_duration")
    private BigDecimal estimatedDuration;

    /**
     * 路线描述
     */
    @TableField("description")
    private String description;

    /**
     * 备注
     */
    @TableField("remark")
    private String remark;

    /**
     * 创建人ID
     */
    @TableField("create_by")
    private Long createBy;

    /**
     * 更新人ID
     */
    @TableField("update_by")
    private Long updateBy;

    /**
     * 创建时间
     */
    @TableField("create_time")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField("update_time")
    private LocalDateTime updateTime;

    /**
     * 删除标记（0-未删除，1-已删除）
     */
    @TableLogic
    @TableField("is_deleted")
    private Integer isDeleted;
}